import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.common.xcontent.XContentFactory;
import org.elasticsearch.transport.client.PreBuiltTransportClient;
import org.junit.Before;
import org.junit.Test;

import java.io.IOException;
import java.net.InetAddress;
import java.net.UnknownHostException;

public class _4Json修改索引 {

    //定义全局变量
   private  PreBuiltTransportClient transportClient;


    /*配置初始化*/
    @Before
    public void Before() throws UnknownHostException {

        //1.创建一个settings对象,xiang相当于是一个配置信息,主要配置集群的名字
          //Settings settings= Settings.builder().put("cluster.name","cluster-es").build();
            Settings settings = Settings.EMPTY;// 这个是单节点创建,等同于上面的的代码创建
        //2.创建一个客户端对象
         transportClient = new PreBuiltTransportClient(settings);
        //3.设置集群的信息(java和es引擎端口之间的连接是9300)
         transportClient.addTransportAddresses(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"),9300));

    }

    /*修改文档索引  有id信息相同的就就是修改,无id信息的就是创建索引*/
    @Test
     public void createIndex() throws IOException {
      //创建一个文档对象.创建一个json格式的字符串,或者使用XContentBuilder
        XContentBuilder xContentBuilder = XContentFactory.jsonBuilder().startObject()
                .field("id","1")
                .field("title","elasticsearch是一个基于lucene的搜索服务")
                .field("content","ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎，基于RESTful web接口.Elasticsearch是用Java开发的，并作为Apache许可条款下的开放源码发布，是当前流行的企业级搜索引擎。设计用于云计算中，能够达到实时搜索，稳定，可靠，快速，安装使用方便。")
                .endObject();

        //创建索引 (索引库名称 ,索引的字段,索引文档的id) setSource设置索引库和索引文档之间的关联
        IndexResponse indexResponse = transportClient.prepareIndex("blog1", "content","1").setSource(xContentBuilder).get();
        System.out.println(indexResponse.status()); //创建索引文档状态成功

        transportClient.close();
    }



}



